# 使用官方 OpenJDK 17 的 Alpine 镜像（超轻量）
FROM eclipse-temurin:17-jre-alpine

# 设置时区和语言环境（Alpine 精简版需手动安装）
RUN apk add --no-cache tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    apk del tzdata

# 创建非 root 用户（安全最佳实践）
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
WORKDIR /app

# 复制 JAR 文件（保持权限）
COPY --chown=appuser:appgroup ./info_harvest-0.0.1-SNAPSHOT.jar app.jar

# 优化 JVM 参数（JDK 17 专属配置）
ENV JAVA_OPTS="\
    -server \
    -Xms512m \
    -Xmx1g \
    -XX:MaxRAMPercentage=75.0 \          # 容器内存限制的百分比
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=200 \           # 目标暂停时间（毫秒）
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=/tmp/heapdump.hprof \
    -Djava.security.egd=file:/dev/./urandom \
    -Dfile.encoding=UTF-8"

# 健康检查端点（需配合 Spring Boot Actuator）
#HEALTHCHECK --interval=30s --timeout=5s \
#    CMD curl -f http://localhost:8080/actuator/health || exit 1

# 启动命令（无需 shell 解析，直接运行）
ENTRYPOINT ["java", \
    "-jar", "app.jar"]